import { app, BrowserWindow, ipcMain, Menu, Tray } from 'electron'
let path = require('path')
// const electron = require('electron');
/**
 * Set `__static` path to static files in production
 * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html
 */
if (process.env.NODE_ENV !== 'development') {
  global.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
}

let mainWindow
const winURL = process.env.NODE_ENV === 'development'
  ? `http://localhost:9080`
  : `file://${__dirname}/index.html`

function createWindow () {
  /**
   * Initial window options
   */
  // 屏幕为16:9
  mainWindow = new BrowserWindow({
    icon: process.env.NODE_ENV === 'development' ? './icon.ico' : __static + '/icon.ico',
    height: 720,
    autoHideMenuBar: true,
    useContentSize: true,
    width: 1280
  })

  mainWindow.loadURL(winURL)

  mainWindow.on('close', (event) => {
    // 监听系统级别关闭
    mainWindow.webContents.send('master-before-close')
    event.preventDefault()
  })
  mainWindow.on('closed', () => {
    mainWindow = null
  })
  // mainWindow.on('resize', throttle(sendResize, 400))
  // function sendResize () {
  //   mainWindow.webContents.send('master-resize')
  // }
  // function throttle (fn, wait) {
  //   var timer = null;
  //   return function () {
  //     var context = this;
  //     var args = arguments;
  //     if (!timer) {
  //       timer = setTimeout(function () {
  //         fn.apply(context, args);
  //         timer = null;
  //       }, wait)
  //     }
  //   }
  // }
}

// 监听渲染进程发过来的消息
// 全屏或非全屏
ipcMain.on('master-maximize', () => {
  mainWindow.setFullScreen(!mainWindow.isFullScreen())
  mainWindow.webContents.send('master-is-full-screen', mainWindow.isFullScreen())
})
// 关闭应用程序
ipcMain.on('master-close-app', () => {
  app.exit()
})
// 最小化
ipcMain.on('master-mini', () => {
  mainWindow.minimize()
})
// 准备关闭，出弹框
ipcMain.on('master-before-close', () => {
  mainWindow.webContents.send('master-before-close')
})
// let appTray = null;   // 引用放外部，防止被当垃圾回收
// // 隐藏主窗口，并创建托盘，绑定关闭事件
// function setTray () {
//   // 系统托盘右键菜单
//   let trayMenuTemplate = [{     // 系统托盘图标目录
//     label: '退出',
//     click: function () {
//       app.quit();
//     }
//   }];
//   // 当前目录下的app.ico图标
//   let iconPath = path.join(__dirname, 'logo.png');
//   appTray = new Tray(iconPath);
//   // 图标的上下文菜单
//   const contextMenu = Menu.buildFromTemplate(trayMenuTemplate);
//   // 隐藏主窗口
//   mainWindow.hide();
//   // 设置托盘悬浮提示
//   appTray.setToolTip('never forget');
//   // 设置托盘菜单
//   appTray.setContextMenu(contextMenu);
//   // 单击托盘小图标显示应用
//   appTray.on('click', function () {
//     // 显示主程序
//     mainWindow.show();
//     // 关闭托盘显示
//     appTray.destroy();
//   });
// };

app.on('ready', createWindow)

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  if (mainWindow === null) {
    createWindow()
  }
})

/**
 * Auto Updater
 *
 * Uncomment the following code below and install `electron-updater` to
 * support auto updating. Code Signing with a valid certificate is required.
 * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-electron-builder.html#auto-updating
 */

/*
import { autoUpdater } from 'electron-updater'

autoUpdater.on('update-downloaded', () => {
  autoUpdater.quitAndInstall()
})

app.on('ready', () => {
  if (process.env.NODE_ENV === 'production') autoUpdater.checkForUpdates()
})
 */
